Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 添加基于zip的单文件格式 #290

Merged
merged 13 commits into from
Feb 2, 2025

Conversation

neooier
Copy link
Contributor

@neooier neooier commented Feb 1, 2025

做了什么?

  1. 重制了Tauri的文件读写调用
  2. 添加了一个全新的基于indexedDB的VFileSystem层用于临时存储数据
  3. 打开时会将zip内的文件全部读取到VFS内
  4. 保存时从VFS内向zip保存

问题

目前使用jszip处理zip的压缩和解压,在面临较大图片时性能可能不佳。可能需要更换为wasm处理。

稳定性需进一步测试

- 在 package.json 中添加 jszip 依赖,版本为 ^3.10.1
- jszip 是一个用于处理 ZIP 文件的 JavaScript 库,可能用于文件压缩或解压功能
- 重构 IndexedDBFileSystem 类,优化文件和目录操作逻辑
- 新增目录创建、读取、重命名和删除功能
- 改进文件重命名和删除,支持自动更新父目录条目
- 优化文件下载时的文件名处理,支持保留文件后缀
- 重构文件打开流程,使用 VFileSystem 统一处理文件读取
- 修改文件路径处理逻辑,支持获取文件名和文件名(含后缀)
- 更新文件对话框默认文件名,使用 .gp 后缀
- 重构 VFileSystem 类,增加 pullMetaData 和 saveToPath 方法
- 更新 RecentFileManager 和 StageSaveManager,使用新的文件系统方法
- 修改 ControllerDragFile 和 CopyEngine,使用 VFileSystem 替代直接文件操作
- 更新 StageExportEngine 和 SoundService,使用新的文件读写方法
- 重构 fs/com.tsx,提供统一的文件操作接口
- 在 VFileSystem 中添加 clear 方法,用于清除文件系统数据
- 优化 IndexedDBFileSystem 中的 getStore、addEntryToParent 和 clear 方法
- 删除多余的空格和括号,提高代码可读性
- 在加载文件前,增加清除虚拟文件系统的操作
- 在多个地方添加 VFileSystem.clear() 调用,以确保文件切换时清理虚拟文件系统
- 修改文件加载逻辑,只允许加载 .gp 后缀的文件
- 更新错误提示信息,明确指出需要选择 .gp 文件
- 在 dealPngFileDrop 函数中添加 async/await 以确保文件写入操作是异步执行的
- 在 readClipboardItems 函数中添加 await 以确保文件写入操作完成后再继续执行后续代码
@Littlefean Littlefean merged commit b35601a into LiRenTech:master Feb 2, 2025
2 checks passed
@Littlefean
Copy link
Contributor

合并后发现问题,又撤回了
具体问题为:
ctrl+v粘贴截图时失效:
~I3F0HLCY(7L)P0RB35I(BE

旧json文件需要手动压缩为zip,如果有自动转换就好了。

含有图片的json旧工程文件在改成meta.json并将所在文件夹压缩成zip并改gp后缀后无法打开,弹窗显示“找不到meta.json”

Au学习笔迹.zip

同时在打开“Au学习笔迹”时会有若干秒的等待时间

此类较大的更改可能换新分支pr更好

@neooier
Copy link
Contributor Author

neooier commented Feb 2, 2025

对于gp格式,应将所有内容放置在压缩包的根目录,不应放在二级目录里。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants